Formularze to miejsce, w którym użytkownicy dotykają Twoich danych. Forms Editor Pytigona pozwala projektować układy formularzy wizualnie, generując — w zależności od potrzebnej złożoności — albo definicje FastForm, albo pełne szablony .ihtml.
Dla prostych formularzy CRUD Pytigon oferuje FastForm — tekstowy język definiowania formularzy. Zamiast pisać klasy formularzy Django, opisujesz formularz w czytelnym formacie tekstowym:
What is this?
Name
Second name::*
name//Title!::*
Description::_
Date::####.##.##
Quantity::0
Choose::[option1;option2
option3]
Age::000
Każda linia staje się polem formularza Django:
| Wzorzec linii | Typ pola | Przykład |
|---|---|---|
| Zwykły tekst | CharField |
Name |
Sufiks ::* |
Wymagane CharField |
Second name::* |
name//title |
Niestandardowa nazwa pola | name//Title!::* |
Sufiks ::_ |
TextField |
Description::_ |
####.##.## |
DateField |
Date::####.##.## |
0 (jedna cyfra) |
IntegerField |
Quantity::0 |
9.99 |
FloatField |
Amount!::9.99 |
[options] |
ChoiceField |
Choose::[a;b;c] |
000 (wiele cyfr) |
IntegerField z limitem |
Age::000 |
**** |
Maskowane CharField |
Code::**** |
Zasady automatycznego generowania nazwy pola (gdy nie użyto //):
Gdy FastForm to za mało, projektujesz formularz bezpośrednio jako szablon .ihtml. Daje Ci to:
Forms Editor pozwala układać pola za pomocą tych bloków konstrukcyjnych:
Renderuje wszystkie pola formularza sekwencyjnie w jednej kolumnie:
[row]
Łączy pola select, w których każdy wybór zależy od poprzedniego:
[comboselect "country" label="Country" data_rel_name="city" src=""]
[[[comboselect "city" label="City" src="/api/cities?country=[[country]]"]]]
Składnia field_name w URL-u src jest dynamicznie zastępowana bieżącą wartością wskazanego pola.
div class=card
div class=card-header...Personal Information
div class=card-body
[field "first_name"]
[field "last_name"]
[field "birth_date"]
Zdefiniuj przyciski wysyłania i ich zachowanie:
Formularze zdefiniowane w Forms Editor integrują się z warstwą modelu przez:
get_form_source() — Metoda modelu zwracająca definicję FastForm w postaci tekstuget_form_class() — Metoda modelu zwracająca dynamicznie wygenerowaną klasę Django Formis_form_valid() — Statyczna metoda modelu do niestandardowej walidacjipost_form() — Hak metody modelu wywoływany po wysłaniu formularzaPozwala to na dostosowanie formularza dla poszczególnych rekordów — różne rekordy tego samego typu mogą używać różnych konfiguracji formularza w zależności od swojego stanu lub typu.